1. Field of the Invention
The present invention pertains to the processing of streams of information in a telecommunications node or network.
2. Related Art and Other Considerations
Time Division Multiplexing (TDM) is a technique for transmitting streams of information (e.g., speech information) in time slots repeated at regular intervals. As one example, a 64 kbps uncompressed speech stream has a slot in each of consecutive 125 microsecond TDM time frames. In accordance with a European standard know as GSM (Global System for Mobile communications), the TDM time frames are 20 milliseconds in duration, while in another standard known as G.729 the TDM time frames are 10 milliseconds in duration.
At various nodes of a telecommunication network the time slots of the speech streams may undergo processing, with speech processing resources being allocated for a specific speech (voice) channel when the time slot is received. It is generally preferably to perform the speech processing using software rather than hardware, particularly in view of the continuous development of new speech algorithms. Yet deterministic resource allocation in the node may lead to insufficient usage of the speech processing resources.
Allocation of speech processing resources at a node for every time slot can undesirably consume processor resources, and exact a disproportionate amount of processor overhead relative to the small amount of data that is included in a speech time slot. This is especially true if the networks which interface with the node are packet based.
Illustrating the foregoing, FIG. 1 describes a prior art TDM technique wherein seven different 64 kbps speech streams have their respective one octet time slots repeated every 125 microseconds. In particular, FIG. 1 shows a TDM frame 18 which includes time slots 201-207 for the respective seven speech streams. Moreover, in FIG. 1 the first time slot 201 (e.g., for the first speech stream) is expanded in representative manner to show what happens during the time duration of the time slot 201 with respect to the speech information carried in time slot 201, including processor operations performed with respect to the speech information carried in time slot 201 during the time slot 201.
In FIG. 1, time 211 (which is a first portion of the time slot 201) is required for the processor to resume execution of its processing function, such processing function having been suspended after processing of the time slot in the previous frame. Once execution of the processing function is resumed, during time 221 the processing function actually processes the speech data carried in time slot 201, sending the processed speech data out in an outgoing time slot 301 of an outgoing frame 28. Time 231 is required to suspend operation of the processing function. Time 241 reflects the fact that the resume time 211, processing time 221, and suspend time 231 typically do not entirely fill the time slot 201. Moreover, it should be understood that the resume time 211, processing time 221, and suspend time 231 may vary from processing function to processing function, and further that the durations of these times can depend upon other factors such as the nature of the incoming speech data (e.g., active or silence speech).
FIG. 1 also illustrates how processor resources might be wasted during call setup and call tear down. For example, if time slot 205 is allocated to a call which is undergoing call setup or call tear down, time slot 205 is reserved but the processing resources allocated thereto are unused until the called party picks up the telephone or the calling party gets tired of waiting.
Thus, times 21l and 231 of time slot 201 are times of processing overhead. Since time slot 201 is representative potentially of all time slots in frame 18, such processing overhead can occur for each time slot carrying actual voice data. Times 241 and time slot 205 depict examples of wasted processor resources as may occur when there is no actual voice data during call setup or call tear down.
FIG. 2 shows an example prior art node 40 which performs processing on seven speech streams such as those illustrated in FIG. 1. The seven speech streams are received in TDM frames at node 40 on line 41. After processing at node 40, the speech streams are output on line 42. The node 40 includes a TDM circuit switch 44 which interconnects processors 461 through 46n. Each processor executes one or more speech processing functions, referenced as media stream processing functions or media stream applications (MSA). For example, processor 461 hosts media stream processing functions 471,1 through 477,1 (MSA1,1 through MSA7,1), which process data with respect to the respective seven speech streams 481 through 487. Similarly, processor 463 hosts media stream processing functions 471,3 through 477,3 (MSA1,3 through MSA7,3). In the notation of FIG. 2, the first subscript for a media stream processing function 47 refers to the particular media stream which it processes, while the second subscript for a media stream processing function 47 distinguishes the function from other functions performed with respect to the same media stream.
In node 40 of FIG. 2, the TDMA circuit switch 44 transfers time slots between the media stream processing functions 47, and thereby serves to allocate the number of time slots to the processors 46 which host the media stream processing functions 47. The number of time slots allocated to any processor 46 is based on that processor's capacity with respect to the worst case processing requirements of the particular media stream processing function 47 which it executes. For example, if the expected worst case per slot processor utilization time for a particular processor with respect to its media stream processing function 47 is 15.7 microseconds (μs), then only seven time slots can be allocated. Even then, the allocation of seven time slots results in a waste of 15.1 microseconds processing time [125 μs−(7×15.7 μs)]. Since the allocation is typically based on worst case MSA processing time, performance of the media stream processing functions in better case scenarios results in even more wasted processor capacity.
Thus, typically allocation of time slots to media streaming handling processors within a multi-processor node is unfortunately based on worst case scenarios. Worst case premised time slot allocation results in inefficient use of processor resources, but is necessary in a system which synchronously handles time slots. Moreover, as evidenced from the situation depicted in FIG. 1, even within times slots there is time lost to processor overhead and potentially idle processor resources.
What is needed, therefore, and an object of the present invention, is a technique for which facilitates prudently allocating of time slots in a node which processes media streams.